Hash Table(哈希表),是透過 Hash Function 計算出一個 key 與 value 所對應的位置,進而建立雜湊表格,而後也能夠過雜湊函式來搜尋找出鍵值存放在表格的位置。
使用 Hash Table 有許多優點:
在 Kotlin 中 $ 符號讓我們可以透過字串使用變數
val name = "Alice" val age = 30 val message = "My name is $name and I am $age years old." println(message)
例如上述程式碼會輸出 My name is Alice and I am 30 years old.
class HashTable<K, V> {
private val table: HashMap<K, V> = HashMap()
// 將鍵值對添加到哈希表
fun put(key: K, value: V) {
table[key] = value
}
// 根據鍵獲取值
fun get(key: K): V? {
return table[key]
}
// 刪除特定鍵的值
fun remove(key: K) {
table.remove(key)
}
// 檢查哈希表是否包含特定鍵
fun containsKey(key: K): Boolean {
return table.containsKey(key)
}
// 返回哈希表中所有鍵的集合
fun keys(): Set<K> {
return table.keys
}
// 返回哈希表中所有值的集合
fun values(): Collection<V> {
return table.values
}
// 返回哈希表的大小(存儲的鍵值對數量)
fun size(): Int {
return table.size
}
// 檢查哈希表是否為空
fun isEmpty(): Boolean {
return table.isEmpty()
}
}
fun main() {
val hashTable = HashTable<String, Int>()
hashTable.put("Alice", 25)
hashTable.put("Bob", 30)
hashTable.put("Charlie", 35)
println("Alice's age: ${hashTable.get("Alice")}")
println("Bob's age: ${hashTable.get("Bob")}")
hashTable.remove("Charlie")
println("Is Charlie in the hash table? ${hashTable.containsKey("Charlie")}")
println("Keys in the hash table: ${hashTable.keys()}")
println("Values in the hash table: ${hashTable.values()}")
println("Size of the hash table: ${hashTable.size()}")
println("Is the hash table empty? ${hashTable.isEmpty()}")
}
上面 Hash Table 所實現的函式包括:
put(key: K, value: V)
:將鍵值對添加到 Hash Table 中。get(key: K): V?
:根據鍵獲取對應的值,如果鍵不存在則返回null。remove(key: K)
:刪除特定鍵的值。containsKey(key: K): Boolean
:檢查 Hash Table 是否包含特定鍵,返回布林值表示是否存在。keys(): Set<K>
:返回 Hash Table 中所有鍵的集合。values(): Collection<V>
:返回 Hash Table 中所有值的集合。size(): Int
:返回 Hash Table 的大小,即存儲的鍵值對數量。isEmpty(): Boolean
:檢查 Hash Table 是否為空,返回布林值表示是否為空。Heap 是一種特殊的數據結構,通常用於儲存和管理具有特定順序的元素集合。堆通常用於以下兩個主要目的:
使用 Heap 有許多優點:
import java.util.PriorityQueue
fun main() {
// 創建一個最小堆
val minHeap = PriorityQueue<Int>()
// 添加元素到堆中
minHeap.add(5)
minHeap.add(2)
minHeap.add(9)
minHeap.add(1)
minHeap.add(6)
// 獲取最小元素(堆頂元素)
val minElement = minHeap.poll()
println("最小元素:$minElement")
// 輸出剩餘的元素,它們將按照最小堆的順序出列
println("剩餘元素:")
while (!minHeap.isEmpty()) {
val element = minHeap.poll()
println(element)
}
}
所有 Code 可以在 Github 找到 ~